#include <stdio.h>

// 定义学生结构体
struct Student {
    int id;
    float score;
};

// 交换两个学生记录的函数
void swap(struct Student *a, struct Student *b) {
    struct Student temp = *a;
    *a = *b;
    *b = temp;
}

// 选择排序函数
void selectionSort(struct Student arr[], int n) {
    int i, j, max_idx;

    for (i = 0; i < n - 1; i++) {
        max_idx = i;
        for (j = i + 1; j < n; j++)
            if (arr[j].score > arr[max_idx].score)
                max_idx = j;

        if (max_idx!= i)
            swap(&arr[i], &arr[max_idx]);
    }
}

// 打印学生记录的函数
void printStudents(struct Student arr[], int n) {
    int count = 0;
    for (int i = 0; i < n; i++) {
        printf("学号: %d, 成绩: %.2f \n", arr[i].id, arr[i].score);
        count++;
    }
}

int main() {
    struct Student students[50];
    int i;

    printf("请输入 50 个学生的学号和成绩:\n");
    for (i = 0; i < 50; i++) {
        printf("请输入第 %d 个学生的学号: ", i + 1);
        scanf("%d", &students[i].id);
        printf("请输入第 %d 个学生的成绩: ", i + 1);
        scanf("%f", &students[i].score);
    }

    selectionSort(students, 50);
    printf("按成绩由高到低排序后的学生记录:\n");
    printStudents(students, 50);

    return 0;
}